package com.sali.disruptor.enums;

/**
 * @description:
 * @author: sali
 * @date: 2025/2/22 下午3:03.
 * @version: 1.0
 */
public enum WaitStrategyEnum {
    /**
     * 阻塞模式
     */
    BLOCKING(0),
    /**
     * 休眠策略
     */
    SLEEPING(1),
    /**
     * 高性能策略
     */
    YIELDING(3);

    WaitStrategyEnum(int value) {
        this.value = value;
    }

    private int value;

    /**
     * 根据code取枚举值
     *
     * @param code
     * @return
     */
    public static WaitStrategyEnum valueOf(int code) {
        WaitStrategyEnum[] values = WaitStrategyEnum.values();
        for (WaitStrategyEnum strategyEnum : values) {
            if (strategyEnum.value == code) {
                return strategyEnum;
            }
        }

        return WaitStrategyEnum.SLEEPING;
    }

    public int getValue() {
        return value;
    }

}
